package com.example.asus.simpleplay.Aty;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.asus.simpleplay.MyBroadcast.AlarmReceiver;
import com.example.asus.simpleplay.MyService.MusicService;
import com.example.asus.simpleplay.R;

import java.util.Calendar;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btnCallAlarm;
    private Button btnExitAlarm;

    AlarmManager alarmManager;
    PendingIntent pendingIntent;

    private Button btnStartPlay;
    private Button btnStopPlay;
    private Intent intentPlay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_layout);

        initView();

    }

    private void initView() {

        /**根据控件的ID得到代表控件的对象，并为按钮设置相应的监听器*/
        btnCallAlarm = (Button) findViewById(R.id.btn_call_alarm_service);
        btnExitAlarm = (Button) findViewById(R.id.btn_exit);

        btnStartPlay = (Button) findViewById(R.id.btn_start_play);
        btnStopPlay = (Button) findViewById(R.id.btn_stop_play);

        btnCallAlarm.setOnClickListener(this);
        btnExitAlarm.setOnClickListener(this);
        btnStartPlay.setOnClickListener(this);
        btnStopPlay.setOnClickListener(this);

    }


    /**在定时提醒的例子中中使用Toast类来管理信息的提示，

     Toast.makeText(NewDialer.this,R.string.notify_incorrect_phonenum,Toast.LENGTH_LONG).show();

     makeText()是Toast的一个方法，用来显示信息，其中分别有三个参数。
     第一个参数：NewDialer.this，是上下文参数，指当前页面NewDialer显示。
     第二个参数：R.string.notify_incorrect_phonenum是你想要显示的内容。
     第三个参数：Toast.LENGTH_LONG，是你指你提示消息，显示的时间。
     最后，show()表示显示这个Toast消息提醒，当程序运行到这里的时候，
     就会显示出来，如果不调用show()方法，即使这个Toast对象存在，并不会显示。
     */
    @Override
    public void onClick(View v) {
        /**启动指定名字的服务*/
        /**
         * startService(new Intent("com.studio.android.START_AUDIO_SERVICE"));
         * 相当于
         * Intent i=new Intent(this,"com.studio.android.START_AUDIO_SERVICE");
         * this.startSeverce(i);
         * */
        switch (v.getId()) {
            case R.id.btn_call_alarm_service:
                Toast.makeText(MainActivity.this , "注册了广播，请5s后查看通知栏" , Toast.LENGTH_LONG).show();
                setAlarm(true);
                break;
            case R.id.btn_exit:
                Toast.makeText(MainActivity.this , "取消了pendingIntent,退出" , Toast.LENGTH_LONG).show();
                setAlarm(false);
                finish();
                break;
            case R.id.btn_start_play:
                Toast.makeText(MainActivity.this , "绑定了playService" , Toast.LENGTH_LONG).show();
                intentPlay = new Intent(MainActivity.this , MusicService.class);
                startService(intentPlay);
                break;
            case R.id.btn_stop_play:
                stopService(intentPlay);
                Toast.makeText(MainActivity.this , "解绑了playService" , Toast.LENGTH_LONG).show();
                break;
        }
    }

    /**
     * @param isStart 启动设置闹钟标志位
     */
    private void setAlarm(Boolean isStart) {
        alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(this, AlarmReceiver.class), 0);
        // 进行闹铃注册
        if (isStart) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            //calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.SECOND, 5);//不是毫秒级的
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        } else {
            alarmManager.cancel(pendingIntent);
        }

    }
}
